package access_twitter;
/*da eseguire solo se ? necessario ricevere le propriet� per la creazione di un 
 * acces token.
 * Una volta ottenuto il token, questo potr� essere richiesto alla classe Accesso
 * con il metodo statico loadAccessToken()
 */

import java.io.BufferedReader;
import java.io.InputStreamReader;

import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.http.AccessToken;
import twitter4j.http.RequestToken;

/*incapsula le credenziali per l'accesso a Twitter
 * 
 */
public class CreateTokenAccess{
	
	//key e secret vengono fornite dalla procedura di registrazione dell'applicazione su twitter
	private static String consumerKey ="";
	private static String consumerSecret ="";
	
	  public static void main(String args[]) throws Exception{
		    Twitter twitter = new TwitterFactory().getInstance();
		    twitter.setOAuthConsumer(consumerKey, consumerSecret);
		    RequestToken requestToken = twitter.getOAuthRequestToken();
		    AccessToken accessToken = null;
		    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		    while (null == accessToken) {
		      System.out.println("Open the following URL and grant access to your account:");
		      System.out.println(requestToken.getAuthorizationURL());
		      System.out.print("Enter the PIN(if aviailable) or just hit enter.[PIN]:");
		      String pin = br.readLine();
		      try{
		         if(pin.length() > 0){
		           accessToken = twitter.getOAuthAccessToken(requestToken, pin);
		         }else{
		           accessToken = twitter.getOAuthAccessToken();
		         }
		      } catch (TwitterException te) {
		        if(401 == te.getStatusCode()){
		          System.out.println("Unable to get the access token.");
		        }else{
		          te.printStackTrace();
		        }
		      }
		    }
		    //persist to the accessToken for future reference.
		    storeAccessToken(twitter.verifyCredentials().getId() , accessToken);
		    Status status = twitter.updateStatus("Freeeeeedo :D");
		    System.out.println("Successfully updated the status to [" + status.getText() + "].");
		    System.exit(0);
		  }
		  private static void storeAccessToken(int useId, AccessToken accessToken){
		    System.out.println (accessToken.getToken());
		    System.out.println (accessToken.getTokenSecret());
		  }
	

}